package d6_tcp03;

import java.net.ServerSocket;
import java.net.Socket;

public class Server01 {
    public static void main(String[] args) throws Exception {
        System.out.println("==服务端进行启动了==");
        //目标:掌握TCP服务端的开发-->进行接受多个客户端
        //1、注册端口
        ServerSocket serverSocket = new ServerSocket(8848);

        while (true) {
            //2、开始等待客户端的Socket管道接通
            //上面是一个阻塞方法,它会等待客户端连接请求
            //当客户端连接到服务器时,accept()返回一个新的Socket对象,这个对象代表当前连接的服务端-->但是有客户端的信息
            //因此-->Socket中封装了客户端的网路信息,包括:客户端的IP地址(Socket.getInetAddress())、客户端的端口号(socket.getPort())
            Socket socket = serverSocket.accept();

            //3、追踪每一个客户端,上线逻辑
            System.out.println(socket.getInetAddress().getHostAddress() + ":" +socket.getPort() + "上线了~~");

            //4、然后交给每一个线程进行处理
            //创建每一个子线程,将管道交给,子线程
            new ServerReaderThread(socket).start();//并开始线程
        }

    }
}
